Pliki

Szereg czasowy

zbiór obserwacji uporządkowanych w czasie

Analiza szeregów czasowych

  • Poszukiwanie zależności
    • składowe deterministyczne
    • składowe okresowe
    • losowość
  • Predykcja
  • Detekcja anomalii

Modele ARIMA

\[X_t=f(X_1,...,X_{n-a})+\color{brown}{Z_t}\]

Model autoregresji - AR(p)

\[X_{10}=\phi_1 \color{red}{X_{9}}+\phi_2 \color{red}{X_{8}}+\phi_3 \color{red}{X_{7}}+Z_{10}=\\=1.1 \color{red}{X_{9}}+-0.7 \color{red}{X_{8}}+0.5 \color{red}{X_{7}}+Z_{10}=\color{green}{0.0995571}+Z_{10}\]

Model ruchomej średniej - MA(q)

\[X_{10}=\theta_1 \color{red}{Z_{9}}+\theta_2 \color{red}{Z_{8}}+\theta_3 \color{red}{Z_{7}}+Z_{10}=\\=-1.5 \color{red}{Z_{9}}+0.4 \color{red}{Z_{8}}+-0.2 \color{red}{Z_{7}}+Z_{10}=\\=\color{green}{-1.0991499}+Z_{10}\]

Model autoregresji ruchomej średniej - ARMA(p,q)

\[X_t=\\ \color{red}{\theta_1 Z_{t-1}+\theta_2 Z_{t-2}+...+\theta_q Z_{t-q}}+\\ +\color{green}{\phi_1 X_{t-1} + \phi_2 X_{t-2}+...+\phi_p X_{t-p}}+\\ +\color{blue}{Z_t}\]

np. \[\color{green}{AR(p = 2)} + \color{red}{MA(q=1)}\] \[X_t=\color{red}{\theta_1 Z_{t-1}}+\color{green}{\phi_1 X_{t-1} + \phi_2 X_{t-2}}+\color{blue}{Z_t}\]

Stacjonarność

  • stała wariancja szumu
  • brak trendów długoterminowych lub okresowych

Różnicowanie

  • Przekształca szereg niestacjonarny w stacjonarny
  • Usuwa trendy (liniowe, wielomianowe, sezonowe)

\[\triangledown X_t=X_t-X_{t-1}\]

ARIMA (p,d,q)

  • AR(p) + MA(q) + diff(d) = ARIMA(p,d,q)
  • różnicowanie szeregu, a następnie dopasowanie modelu ARMA(p,q)
  • pozwala na modelowanie szeregów niestacjonarnych
  • rząd różnicowania rzadko większy niż 1

Przykład modelu ARMA

model = auto.arima(series, max.p = 5, max.q = 5, stationary = TRUE)
model = Arima(series, order=c(3,0,2))
plot(series)

Jakość dopasowania 1

model$coef
##        ar1        ar2        ar3        ma1        ma2  intercept 
##  1.0628518 -0.6672928  0.4864164  0.5400869 -0.3832765  0.3051114
model$sigma2
## [1] 0.2494025
model$aicc
## [1] 2911.481
model$bic
## [1] 2950.631

Jakość dopasowania 2

plot(model$residuals)

hist(model$residuals, breaks=25)

Jakość dopasowania 3

hist(model$residuals, breaks=25)

Wybór rzędów modelu - p, d, q

  • przed modelowaniem:
    • pewne wskazówki na podstawie funkcji ACF i PACF

Wybór rzędów modelu - p, d, q

  • po modelowaniu:
    • kryteria AIC, AICC, BICC
    • rozkład reszt
    • analiza dokładności prognoz
    • analiza istotności współczynników modelu

Zadanie

  • napisać kod który dobierze wszystkie możliwe modele do szeregu w zakresie
    • 0 <= p <= p_max
    • 0 <= d <= 1
    • 0 <= q <= q_max
  • oraz porówna te modele pod kątem AIC, AICC, BIC
  • oraz zbada autokorelację reszt (test Box-Pierca, p-value)
  • porównać wynik z modelem z auto.arima

Modele sezonowe

Seasonal ARIMA

\[X_t = \color{red}{ARIMA(p,d,q)} + f(\color{green}{X_{t-s},X_{t-2s},X_{t-3s},X_{t-4s}})\]

SARIMA(p,d,q)(P,D,Q)[s]

np. SARIMA(1,0,2)(2,0,1)[12] \[X_t = \\\phi_1X_{t-1}+\theta_1Z_{t-1}+\theta_2Z_{t-2}+\\+\Phi_1X_{t-s}+\Phi_2X_{t-2s}+\Theta_1Z_{t-s}\\+Z_t\]

Okresowość

ACF

Okresowość - Dekompozycja

ARIMA(3,0,0) + diff(lag=12) = SARIMA(3,0,0)(0,1,0)[12]

Okresowość - prognoza z dekompozycji

Okresowość - SARIMA

auto.arima

model1 = auto.arima(seasonal_time_series, seasonal=TRUE)
model2 = Arima(seasonal_time_series, order=c(3,0,0),
               seasonal=list(order=c(2,1,2), period=12))
model$coef
##        ar1        ar2        ma1        ma2       sar1       sma1 
##  0.6539013 -0.4540754 -0.7255744  0.2532569 -0.2427082 -0.8451177
model$sigma2
## [1] 0.4075656

Predykcja

forecast_length = period
include_previous_length = period*5
forecasted = forecast(model, forecast_length)
plot(forecasted, include_previous_length)

Problemy modeli SARIMA

  • okresowość > 24
    • np. próbkowanie 1min, okres 24h
    • dla okresu S wewnętrznie dopasowanie S parametrów
    • bardzo duże wymagania pamięciow (macierz kowariancji)
  • nie obsluguje wielokrotnej sezonowosci (np. 24h i 7d)

Szeregi Fouriera

  • modelowanie korelacji okresowej za pomocą szeregów fouriera zamiast okresowego AR i MA

Szereg o długiej okresowości (288 próbek)

Dekompozycja

Model ARIMA + Fourier

#period = 288 #sampling = 10 #y = ts(..., f=period*sampling)
model = Arima(y, order=c(2,0,1), xreg=fourier(y,K=1))
model$coef
##          ar1          ar2          ma1    intercept      S1-2880 
##  0.867612763 -0.170287114  0.228848076 -0.005962361  0.411032413 
##      C1-2880 
##  0.025343092

Prognozowanie 1

Prognozowanie 2

Prognozowanie 3

Prognozowanie 4

Prognozowanie 5

Szereg wielookresowy

  • przeanalizować okresowość
  • dobraćm odel wielookresowy z wykorzystaniem szeregów Fouriera
  • ex2.R

Wady i zalety modelu ARIMA + Fourier

  • pozwala na zamodelowanie długiej okresowości (>24)
  • pozwala na modelowanie wielokrotnej okresowości
  • znacznie skrócony czas dobierania modelu
  • xreg może być dowolną funkcją, np. prostokątną

  • bardzo wrażliwy na zmiany okresowości
  • wymaga określenia okresów
  • wymaga określenia liczby harmonicznych dla każdego okresu
  • podatny na efekt Gibbsa

Sieci neuronowe w modelowaniu szeregów czasowych

  • coraz bardziej popularne w prognozowaniu szeregów czasowych
  • tworzą nieliniową sieć zależności pomiędzy zmiennymi wejściowymi i wyjściem
  • nie są organiczone warunkami stacjonarności
  • nie uwzględniają szumu
f = as.formula('Y~D1+D2+D3+D4+D5+DS1_1+DS1_2+DS1_3+DS2_1+DS2_2+DS2_3')
nn = neuralnet(f,data=train_set,hidden=c(11))

Feed-forward neural network

Sieci neuronowe - prognozowanie

Sieci neuronowe - przedziały ufności

  • resampling szumu z zbioru treningowego
  • symulacja przebiegu szeregu

Sieci neuronowe - przedziały ufności

Detekcja anomalii

Detekcja anomalii

Podsumowanie

  • klasyczna ARIMA
    • prosta i intuicyjna
    • nie wspiera długich okresów
    • nie wspiera wielookresowości
    • nadaje się do modelowania danych tygodniowych, miesięcznych, rocznych…
    • wymaga określenia rzędu modelu
  • ARIMA + Fourier
    • rozwiązuje problem okresowości
    • szybszy niż SARIMA
    • wymaga określenia liczby harmoczniych

Podsumowanie

  • sieci neuronowe
    • brak podziału na próbki zwykłe i okresowe
    • wszystkie zmienne traktowane są tak samo
    • wymaga określenia liczby neuronów
    • długi czas uczenia
    • nie zakładają rozkładu normalnego szumu na etapie modelowania

Podsumowanie

  • modele maja rożne ograniczenia
  • automatyczny wybór rzędów i parametrów modelu nie jest prosty
  • przed wyborem modelu konieczna jest analiza własności szeregu
  • dodatkowe utrudnienia w prognozowaniu:
    • wybór zbioru treningowego
    • lata przestępne
    • święta ruchome
  • najpewniejszą metodą jest wybór wielu modeli i ich ocena za pomocą wybranych kryteriów